//!
/**
 **************************************************************************************************************************************************************
 * 
 **************************************************************************************************************************************************************
 * @file main.cpp
 **************************************************************************************************************************************************************/

/**************************************************************************************************************************************************************
 * Includes
 **************************************************************************************************************************************************************/
#include "RBMain/RBCommon.h"

#include "RBApplication/Main.h"

#include "RBApplication/RBApplication.h"
#include "RBApplication/RBWin32Application.h"

#include <stb.h>
#include "gi_sample.h"

/**************************************************************************************************************************************************************
 * Defines
 **************************************************************************************************************************************************************/
class RBEmptyApplication
{
public:

                                RBEmptyApplication  ();
    virtual                    ~RBEmptyApplication  ();

    void                        Start               (void* hInstance);
    bool                        Idle				();

private:
    gi_sample*                  m_app;
};

/***********************************************************************************************************
 * 
 ***********************************************************************************************************/
RBEmptyApplication::RBEmptyApplication()
{
	new RBApplication();
}


/***********************************************************************************************************
 *
 ***********************************************************************************************************/
RBEmptyApplication::~RBEmptyApplication()
{
    delete m_app;
    delete RBApplication::GetSingleton();
}

/***********************************************************************************************************
 * 
 ***********************************************************************************************************/
bool RBEmptyApplication::Idle()
{
    m_app->Render();

	return true;
}

void RBEmptyApplication::Start(void* hInstance)
{
    void* hWnd = RBWin32Application::InitWindow(hInstance, 720, 720);

    m_app = new gi_sample(hWnd, 720, 720);
    m_app->AddFile("data/powerplant/powerplant.sdkmesh");

//    if (RBApplication::GetSingleton()->Init(NULL))
    {
        RBWin32Application::MainLoop(hWnd, RBFastDelegateBind(&RBEmptyApplication::Idle, this));
    }
    RBWin32Application::ReleaseWindow(hWnd);

}

int main(int argc, char* argv[])
{
    RBEmptyApplication().Start(NULL);
    return 0;
}


//MAIN_WIN32(RBEmptyApplication)

/**************************************************************************************************************************************************************/
